import { translations } from '@aws-amplify/ui';
import {
Authenticator,
Loader,
useAuthenticator,
View,
} from '@aws-amplify/ui-react';
import { I18n } from 'aws-amplify';
import * as React from 'react';
type ScreenProps = {
Component: JSX.Element;
};
function Screen({ Component }: ScreenProps) {
// Used to render the component when side-effects happen
const { route } = useAuthenticator();
React.useEffect(() => {
I18n.putVocabulariesForLanguage('en', {
// Sign In screen
'Sign In': 'Login', // Tab header
'Sign in': 'Log in', // Button label
'Sign in to your account': 'Welcome Back!', // Header text
Username: 'Enter your username', // Username label
Password: 'Enter your password', // Password label
'Forgot your password?': 'Reset Password',
// Sign Up screen
'Create Account': 'Register', // Tab header
'Create a new account': 'New User', // Header text
'Confirm Password': 'Confirm your password', // Confirm Password label
Email: 'Enter your email',
'Phone Number': 'Enter your phone number',
// Setup TOTP screen
Loading: 'QR code would show here',
Code: '2FA Code',
Confirm: 'Confirm 2FA',
'Back to Sign In': 'Back to Login',
// Reset Password screen
'Reset your password': 'Forgot your password?',
'Enter your username': 'Username or Email',
'Send code': 'Reset my password',
// 'Back to Sign In': 'Back to Login', # Already set
});
return () => {
I18n.putVocabulariesForLanguage('en', translations['en']);
};
}, []);
if (route === 'idle') {
return ;
}
if (!Component) {
throw new Error(
'Component is not defined. Please check the component name'
);
}
return Component;
}
export function LabelsAndTextDemo({ Component }: ScreenProps) {
return (
);
}